package com.zrrd.learn.chapter08面向对象.objectoriented01;

/**
 * 英雄类
 *
 * @author wrn
 * @version 1.0
 * @date 2023/7/24 10:48
 */

import lombok.Data;

import java.util.Scanner;

/**
 * （1）定义一个游戏中Hero 英雄的类，在该类中定义英雄的名字， 生命值和等级3 个属性，
 * 定义一个构造函数完成对生命值和等级的初始化，分别赋初值为100，1。同时实现名字的输入和英雄信息的输出。
 * （2）在上一题的基础上，为英雄再定义拥有一个参数的构造方法，传入一个英雄类型的值，
 * 如果为1，则为普通英雄，生命值为100，如果该值为2，则为高级英雄，生命值初始化为200。
 * （3）在上两英雄类型的基础上，为英雄添加一个基本战斗的方法，
 * 该方法拥有一个英雄类型的参数，当传入另一个英雄时，能降低对方100 点血。
 * 再增加一个绝招的重载方法，加入一个战斗类型参数，通过输入不同绝招参数，降低对方不同的血量。
 */
@Data
public class Hero {
    private String Name;
    private int Healthvalue;
    private int grade;

    public Hero() {
        this.Healthvalue=100;
        this.grade=1;

        System.out.println("1请输入英雄名");
        Scanner scan = new Scanner(System.in);
        this.Name = scan.nextLine();

        System.out.println("英雄名为" + this.Name + "生命值为" + Healthvalue + "等级为" + grade);

    }

    public Hero(int type) {

        if (type == 1) {
            this.Healthvalue=100;
        } else if (type == 2) {
            this.Healthvalue=200;
        } else {
            System.out.println("英雄类型错误");
        }
        this.grade=1;
        System.out.println("2请输入英雄名");
        Scanner scan = new Scanner(System.in);
        this.Name = scan.nextLine();

        System.out.println("英雄名为" + this.Name + "生命值为" + Healthvalue + "等级为" + grade);
    }

    public void fight(int type){


//        Hero h1 = new Hero();
        this.Healthvalue-=100;
        System.out.println("英雄血量减少100");
        System.out.println("英雄名为" + this.Name + "生命值为" + Healthvalue + "等级为" + grade);
    }

    public void fight(int type,int fighttype){

        this.Healthvalue-=fighttype;
        System.out.println("英雄血量减少+"+fighttype);
        System.out.println("英雄名为" + this.Name + "生命值为" + Healthvalue + "等级为" + grade);
    }


}
